import shutil

from celery import shared_task
import os
import logging
from utils import utils
from export.Export import Export

logger = logging.getLogger(__name__)

BASE_DIR, fn = os.path.split(__file__)


@shared_task
def export(svn_address, subject):
    # svn地址的基本路径
    svn_base = 'https://192.168.66.121:18080/svn/mfhcdDoc/04_项目文档/生产环境SQL执行目录/'
    # 模板文件的路径
    templates = 'F:\\django\data-service-backend\\export\\task\\default'
    # 任务脚本执行目录,过滤一下
    task_dir = 'F:\\django\data-service-backend\\export\\task\\' + str.strip(subject)

    if os.path.exists(task_dir):
        # 如果已经存在,则删除重新建立
        logger.info("删除已创建目录:".format(task_dir))
        # rd / s / q task_dir
        os.system('rd / s / q {}'.format(task_dir))
        # shutil.rmtree(task_dir, True)

    logger.info("开始拷贝模板文件!")
    shutil.copytree(templates, task_dir)
    logger.info("模板文件拷贝完成!")

    logger.info('开始从svn上下载sql脚本')
    # 拼接出sql保存地址
    dest_path = os.path.join(task_dir, 'sql')

    # 拼接svn地址
    if not svn_address:
        logger.error('svn_address地址不能为空!')
        raise ValueError('svn_address地址不能为空!')
    else:
        if str.strip(svn_address[0]) == '/':   # 如果以"/"开头,则过滤掉一个
            svn_address = svn_address[1:]
        svn_url = svn_base + svn_address

    try:
        # svn命令的路径
        svn_cmd = "F:\\django\\data-service-backend\\tools\\Apache-Subversion-1.14.1\\bin\\svn.exe"
        os.system("{} co {}  --username {} --password {} {}"
                  .format(svn_cmd, svn_url, 'yinhb', 'Deny20080!', dest_path))

    except Exception as e:
        logger.error(e)
        raise Exception(e)

    logger.info('开始执行提取任务')
    # 传入提取任务文件夹名称
    try:
        result = Export(task_dir).export()
        if not result:
            raise Exception('执行任务失败!')
    except Exception as e:
        logger.info(e)
        raise Exception(e)


if __name__ == '__main__':
    pass
